
// MIT License
// 
// Copyright (c) 2009-2017 Luca Piccioni
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// 
// This file is automatically generated

#pragma warning disable 649, 1572, 1573

// ReSharper disable RedundantUsingDirective
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;

using Khronos;

// ReSharper disable CheckNamespace
// ReSharper disable InconsistentNaming
// ReSharper disable JoinDeclarationAndInitializer

namespace OpenGL
{
	public partial class Gl
	{
		/// <summary>
		/// [GL] Value of GL_TEXTURE_TILING_EXT symbol.
		/// </summary>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public const int TEXTURE_TILING_EXT = 0x9580;

		/// <summary>
		/// [GL] Value of GL_DEDICATED_MEMORY_OBJECT_EXT symbol.
		/// </summary>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public const int DEDICATED_MEMORY_OBJECT_EXT = 0x9581;

		/// <summary>
		/// [GL] Value of GL_PROTECTED_MEMORY_OBJECT_EXT symbol.
		/// </summary>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public const int PROTECTED_MEMORY_OBJECT_EXT = 0x959B;

		/// <summary>
		/// [GL] Value of GL_NUM_TILING_TYPES_EXT symbol.
		/// </summary>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public const int NUM_TILING_TYPES_EXT = 0x9582;

		/// <summary>
		/// [GL] Value of GL_TILING_TYPES_EXT symbol.
		/// </summary>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public const int TILING_TYPES_EXT = 0x9583;

		/// <summary>
		/// [GL] Value of GL_OPTIMAL_TILING_EXT symbol.
		/// </summary>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public const int OPTIMAL_TILING_EXT = 0x9584;

		/// <summary>
		/// [GL] Value of GL_LINEAR_TILING_EXT symbol.
		/// </summary>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public const int LINEAR_TILING_EXT = 0x9585;

		/// <summary>
		/// [GL] glDeleteMemoryObjectsEXT: Binding for glDeleteMemoryObjectsEXT.
		/// </summary>
		/// <param name="memoryObjects">
		/// A <see cref="T:uint[]"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void DeleteMemoryObjectEXT(uint[] memoryObjects)
		{
			unsafe {
				fixed (uint* p_memoryObjects = memoryObjects)
				{
					Debug.Assert(Delegates.pglDeleteMemoryObjectsEXT != null, "pglDeleteMemoryObjectsEXT not implemented");
					Delegates.pglDeleteMemoryObjectsEXT(memoryObjects.Length, p_memoryObjects);
					LogCommand("glDeleteMemoryObjectsEXT", null, memoryObjects.Length, memoryObjects					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glIsMemoryObjectEXT: Binding for glIsMemoryObjectEXT.
		/// </summary>
		/// <param name="memoryObject">
		/// A <see cref="T:uint"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static bool IsMemoryObjectEXT(uint memoryObject)
		{
			bool retValue;

			Debug.Assert(Delegates.pglIsMemoryObjectEXT != null, "pglIsMemoryObjectEXT not implemented");
			retValue = Delegates.pglIsMemoryObjectEXT(memoryObject);
			LogCommand("glIsMemoryObjectEXT", retValue, memoryObject			);
			DebugCheckErrors(retValue);

			return (retValue);
		}

		/// <summary>
		/// [GL] glCreateMemoryObjectsEXT: Binding for glCreateMemoryObjectsEXT.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="memoryObjects">
		/// A <see cref="T:uint[]"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void CreateMemoryObjectEXT(int n, uint[] memoryObjects)
		{
			unsafe {
				fixed (uint* p_memoryObjects = memoryObjects)
				{
					Debug.Assert(Delegates.pglCreateMemoryObjectsEXT != null, "pglCreateMemoryObjectsEXT not implemented");
					Delegates.pglCreateMemoryObjectsEXT(n, p_memoryObjects);
					LogCommand("glCreateMemoryObjectsEXT", null, n, memoryObjects					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glMemoryObjectParameterivEXT: Binding for glMemoryObjectParameterivEXT.
		/// </summary>
		/// <param name="memoryObject">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:MemoryObjectParameterName"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:int[]"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void MemoryObjectParameterEXT(uint memoryObject, MemoryObjectParameterName pname, int[] @params)
		{
			unsafe {
				fixed (int* p_params = @params)
				{
					Debug.Assert(Delegates.pglMemoryObjectParameterivEXT != null, "pglMemoryObjectParameterivEXT not implemented");
					Delegates.pglMemoryObjectParameterivEXT(memoryObject, (int)pname, p_params);
					LogCommand("glMemoryObjectParameterivEXT", null, memoryObject, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glGetMemoryObjectParameterivEXT: Binding for glGetMemoryObjectParameterivEXT.
		/// </summary>
		/// <param name="memoryObject">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:MemoryObjectParameterName"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:int[]"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void GetMemoryObjectParameterEXT(uint memoryObject, MemoryObjectParameterName pname, [Out] int[] @params)
		{
			unsafe {
				fixed (int* p_params = @params)
				{
					Debug.Assert(Delegates.pglGetMemoryObjectParameterivEXT != null, "pglGetMemoryObjectParameterivEXT not implemented");
					Delegates.pglGetMemoryObjectParameterivEXT(memoryObject, (int)pname, p_params);
					LogCommand("glGetMemoryObjectParameterivEXT", null, memoryObject, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glTexStorageMem2DEXT: Binding for glTexStorageMem2DEXT.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:TextureTarget"/>.
		/// </param>
		/// <param name="levels">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="internalFormat">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="memory">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:ulong"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void TexStorageEXT(TextureTarget target, int levels, int internalFormat, int width, int height, uint memory, ulong offset)
		{
			Debug.Assert(Delegates.pglTexStorageMem2DEXT != null, "pglTexStorageMem2DEXT not implemented");
			Delegates.pglTexStorageMem2DEXT((int)target, levels, internalFormat, width, height, memory, offset);
			LogCommand("glTexStorageMem2DEXT", null, target, levels, internalFormat, width, height, memory, offset			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glTexStorageMem2DMultisampleEXT: Binding for glTexStorageMem2DMultisampleEXT.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:TextureTarget"/>.
		/// </param>
		/// <param name="samples">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="internalFormat">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="fixedSampleLocations">
		/// A <see cref="T:bool"/>.
		/// </param>
		/// <param name="memory">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:ulong"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void TexStorageMem2DMultisampleEXT(TextureTarget target, int samples, int internalFormat, int width, int height, bool fixedSampleLocations, uint memory, ulong offset)
		{
			Debug.Assert(Delegates.pglTexStorageMem2DMultisampleEXT != null, "pglTexStorageMem2DMultisampleEXT not implemented");
			Delegates.pglTexStorageMem2DMultisampleEXT((int)target, samples, internalFormat, width, height, fixedSampleLocations, memory, offset);
			LogCommand("glTexStorageMem2DMultisampleEXT", null, target, samples, internalFormat, width, height, fixedSampleLocations, memory, offset			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glTexStorageMem3DEXT: Binding for glTexStorageMem3DEXT.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:TextureTarget"/>.
		/// </param>
		/// <param name="levels">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="internalFormat">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="memory">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:ulong"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void TexStorageEXT(TextureTarget target, int levels, int internalFormat, int width, int height, int depth, uint memory, ulong offset)
		{
			Debug.Assert(Delegates.pglTexStorageMem3DEXT != null, "pglTexStorageMem3DEXT not implemented");
			Delegates.pglTexStorageMem3DEXT((int)target, levels, internalFormat, width, height, depth, memory, offset);
			LogCommand("glTexStorageMem3DEXT", null, target, levels, internalFormat, width, height, depth, memory, offset			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glTexStorageMem3DMultisampleEXT: Binding for glTexStorageMem3DMultisampleEXT.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:TextureTarget"/>.
		/// </param>
		/// <param name="samples">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="internalFormat">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="fixedSampleLocations">
		/// A <see cref="T:bool"/>.
		/// </param>
		/// <param name="memory">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:ulong"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void TexStorageMem3DMultisampleEXT(TextureTarget target, int samples, int internalFormat, int width, int height, int depth, bool fixedSampleLocations, uint memory, ulong offset)
		{
			Debug.Assert(Delegates.pglTexStorageMem3DMultisampleEXT != null, "pglTexStorageMem3DMultisampleEXT not implemented");
			Delegates.pglTexStorageMem3DMultisampleEXT((int)target, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset);
			LogCommand("glTexStorageMem3DMultisampleEXT", null, target, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glBufferStorageMemEXT: Binding for glBufferStorageMemEXT.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:BufferTarget"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="memory">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:ulong"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void BufferStorageEXT(BufferTarget target, uint size, uint memory, ulong offset)
		{
			Debug.Assert(Delegates.pglBufferStorageMemEXT != null, "pglBufferStorageMemEXT not implemented");
			Delegates.pglBufferStorageMemEXT((int)target, size, memory, offset);
			LogCommand("glBufferStorageMemEXT", null, target, size, memory, offset			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glTextureStorageMem2DEXT: Binding for glTextureStorageMem2DEXT.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="levels">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="internalFormat">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="memory">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:ulong"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void TextureStorageEXT(uint texture, int levels, int internalFormat, int width, int height, uint memory, ulong offset)
		{
			Debug.Assert(Delegates.pglTextureStorageMem2DEXT != null, "pglTextureStorageMem2DEXT not implemented");
			Delegates.pglTextureStorageMem2DEXT(texture, levels, internalFormat, width, height, memory, offset);
			LogCommand("glTextureStorageMem2DEXT", null, texture, levels, internalFormat, width, height, memory, offset			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glTextureStorageMem2DMultisampleEXT: Binding for glTextureStorageMem2DMultisampleEXT.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="samples">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="internalFormat">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="fixedSampleLocations">
		/// A <see cref="T:bool"/>.
		/// </param>
		/// <param name="memory">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:ulong"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void TextureStorageMem2DMultisampleEXT(uint texture, int samples, int internalFormat, int width, int height, bool fixedSampleLocations, uint memory, ulong offset)
		{
			Debug.Assert(Delegates.pglTextureStorageMem2DMultisampleEXT != null, "pglTextureStorageMem2DMultisampleEXT not implemented");
			Delegates.pglTextureStorageMem2DMultisampleEXT(texture, samples, internalFormat, width, height, fixedSampleLocations, memory, offset);
			LogCommand("glTextureStorageMem2DMultisampleEXT", null, texture, samples, internalFormat, width, height, fixedSampleLocations, memory, offset			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glTextureStorageMem3DEXT: Binding for glTextureStorageMem3DEXT.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="levels">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="internalFormat">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="memory">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:ulong"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void TextureStorageEXT(uint texture, int levels, int internalFormat, int width, int height, int depth, uint memory, ulong offset)
		{
			Debug.Assert(Delegates.pglTextureStorageMem3DEXT != null, "pglTextureStorageMem3DEXT not implemented");
			Delegates.pglTextureStorageMem3DEXT(texture, levels, internalFormat, width, height, depth, memory, offset);
			LogCommand("glTextureStorageMem3DEXT", null, texture, levels, internalFormat, width, height, depth, memory, offset			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glTextureStorageMem3DMultisampleEXT: Binding for glTextureStorageMem3DMultisampleEXT.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="samples">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="internalFormat">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="fixedSampleLocations">
		/// A <see cref="T:bool"/>.
		/// </param>
		/// <param name="memory">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:ulong"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void TextureStorageMem3DMultisampleEXT(uint texture, int samples, int internalFormat, int width, int height, int depth, bool fixedSampleLocations, uint memory, ulong offset)
		{
			Debug.Assert(Delegates.pglTextureStorageMem3DMultisampleEXT != null, "pglTextureStorageMem3DMultisampleEXT not implemented");
			Delegates.pglTextureStorageMem3DMultisampleEXT(texture, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset);
			LogCommand("glTextureStorageMem3DMultisampleEXT", null, texture, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glNamedBufferStorageMemEXT: Binding for glNamedBufferStorageMemEXT.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="memory">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:ulong"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
		public static void NamedBufferStorageEXT(uint buffer, uint size, uint memory, ulong offset)
		{
			Debug.Assert(Delegates.pglNamedBufferStorageMemEXT != null, "pglNamedBufferStorageMemEXT not implemented");
			Delegates.pglNamedBufferStorageMemEXT(buffer, size, memory, offset);
			LogCommand("glNamedBufferStorageMemEXT", null, buffer, size, memory, offset			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glTexStorageMem1DEXT: Binding for glTexStorageMem1DEXT.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:TextureTarget"/>.
		/// </param>
		/// <param name="levels">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="internalFormat">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="memory">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:ulong"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object")]
		public static void TexStorageEXT(TextureTarget target, int levels, int internalFormat, int width, uint memory, ulong offset)
		{
			Debug.Assert(Delegates.pglTexStorageMem1DEXT != null, "pglTexStorageMem1DEXT not implemented");
			Delegates.pglTexStorageMem1DEXT((int)target, levels, internalFormat, width, memory, offset);
			LogCommand("glTexStorageMem1DEXT", null, target, levels, internalFormat, width, memory, offset			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glTextureStorageMem1DEXT: Binding for glTextureStorageMem1DEXT.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="levels">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="internalFormat">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="memory">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:ulong"/>.
		/// </param>
		[RequiredByFeature("GL_EXT_memory_object")]
		public static void TextureStorageEXT(uint texture, int levels, int internalFormat, int width, uint memory, ulong offset)
		{
			Debug.Assert(Delegates.pglTextureStorageMem1DEXT != null, "pglTextureStorageMem1DEXT not implemented");
			Delegates.pglTextureStorageMem1DEXT(texture, levels, internalFormat, width, memory, offset);
			LogCommand("glTextureStorageMem1DEXT", null, texture, levels, internalFormat, width, memory, offset			);
			DebugCheckErrors(null);
		}

		internal static unsafe partial class Delegates
		{
			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glDeleteMemoryObjectsEXT(int n, uint* memoryObjects);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glDeleteMemoryObjectsEXT pglDeleteMemoryObjectsEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			[return: MarshalAs(UnmanagedType.I1)]
			internal delegate bool glIsMemoryObjectEXT(uint memoryObject);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glIsMemoryObjectEXT pglIsMemoryObjectEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glCreateMemoryObjectsEXT(int n, uint* memoryObjects);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glCreateMemoryObjectsEXT pglCreateMemoryObjectsEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glMemoryObjectParameterivEXT(uint memoryObject, int pname, int* @params);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glMemoryObjectParameterivEXT pglMemoryObjectParameterivEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glGetMemoryObjectParameterivEXT(uint memoryObject, int pname, int* @params);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glGetMemoryObjectParameterivEXT pglGetMemoryObjectParameterivEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glTexStorageMem2DEXT(int target, int levels, int internalFormat, int width, int height, uint memory, ulong offset);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glTexStorageMem2DEXT pglTexStorageMem2DEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glTexStorageMem2DMultisampleEXT(int target, int samples, int internalFormat, int width, int height, [MarshalAs(UnmanagedType.I1)] bool fixedSampleLocations, uint memory, ulong offset);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glTexStorageMem2DMultisampleEXT pglTexStorageMem2DMultisampleEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glTexStorageMem3DEXT(int target, int levels, int internalFormat, int width, int height, int depth, uint memory, ulong offset);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glTexStorageMem3DEXT pglTexStorageMem3DEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glTexStorageMem3DMultisampleEXT(int target, int samples, int internalFormat, int width, int height, int depth, [MarshalAs(UnmanagedType.I1)] bool fixedSampleLocations, uint memory, ulong offset);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glTexStorageMem3DMultisampleEXT pglTexStorageMem3DMultisampleEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glBufferStorageMemEXT(int target, uint size, uint memory, ulong offset);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glBufferStorageMemEXT pglBufferStorageMemEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glTextureStorageMem2DEXT(uint texture, int levels, int internalFormat, int width, int height, uint memory, ulong offset);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glTextureStorageMem2DEXT pglTextureStorageMem2DEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glTextureStorageMem2DMultisampleEXT(uint texture, int samples, int internalFormat, int width, int height, [MarshalAs(UnmanagedType.I1)] bool fixedSampleLocations, uint memory, ulong offset);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glTextureStorageMem2DMultisampleEXT pglTextureStorageMem2DMultisampleEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glTextureStorageMem3DEXT(uint texture, int levels, int internalFormat, int width, int height, int depth, uint memory, ulong offset);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glTextureStorageMem3DEXT pglTextureStorageMem3DEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glTextureStorageMem3DMultisampleEXT(uint texture, int samples, int internalFormat, int width, int height, int depth, [MarshalAs(UnmanagedType.I1)] bool fixedSampleLocations, uint memory, ulong offset);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glTextureStorageMem3DMultisampleEXT pglTextureStorageMem3DMultisampleEXT;

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glNamedBufferStorageMemEXT(uint buffer, uint size, uint memory, ulong offset);

			[RequiredByFeature("GL_EXT_memory_object", Api = "gl|gles2")]
			[ThreadStatic]
			internal static glNamedBufferStorageMemEXT pglNamedBufferStorageMemEXT;

			[RequiredByFeature("GL_EXT_memory_object")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glTexStorageMem1DEXT(int target, int levels, int internalFormat, int width, uint memory, ulong offset);

			[RequiredByFeature("GL_EXT_memory_object")]
			[ThreadStatic]
			internal static glTexStorageMem1DEXT pglTexStorageMem1DEXT;

			[RequiredByFeature("GL_EXT_memory_object")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glTextureStorageMem1DEXT(uint texture, int levels, int internalFormat, int width, uint memory, ulong offset);

			[RequiredByFeature("GL_EXT_memory_object")]
			[ThreadStatic]
			internal static glTextureStorageMem1DEXT pglTextureStorageMem1DEXT;

		}
	}

}
